Preface

Briefly about the report

The report below presents a summary of selected data/curiosities about Poland and Poles. All data was collected from Wikipedia using web scraping, each time the downloaded data is marked with the source and name of a specific subpage in English (in some cases, Polish equivalents were also used. Enjoy reading! :)

Entry

Poland, officially known as the Republic of Poland (Rzeczpospolita Polska), is a captivating country nestled in Central Europe. From the Baltic Sea in the north to the Sudetes and Carpathian Mountains in the south, Poland boasts a diverse landscape that encompasses both natural beauty and historical significance.

  • Geography: Poland’s territory spans from the Baltic coast to the picturesque mountain ranges. The Vistula River, the longest in the country, meanders through its heartland.

  • Population: With over 38 million inhabitants, Poland is the fifth-most populous member state of the European Union. Its vibrant culture and rich history have shaped a resilient and proud nation.

  • Language: Polish is the official language, spoken by nearly everyone. The country’s linguistic heritage reflects its complex history and diverse influences.

  • History: From prehistoric settlements to the establishment of statehood in 966, Poland’s journey has been marked by resilience, cultural exchange, and pivotal moments. The tribal Polans, who gave the country its name, played a crucial role in shaping its identity.

  • Economy: Poland’s economy is robust, with a mix of industry, agriculture, and services. It ranks among the top 20 economies globally in terms of GDP (PPP).

  • Religion: Catholicism has deep roots in Poland, with over 70% of the population identifying as Christian. The country’s religious heritage is intertwined with its national identity.

  • Cities: Warsaw, the capital, stands as a testament to Poland’s resilience after World War II. Other major cities like Kraków, Wrocław, Łódź, Poznań, and Gdańsk contribute to the country’s vibrant urban life.

And what about sport?

Poland has a rich sports culture that is an integral part of national pride and identity. The country excels in a variety of sports, with a particularly strong tradition in football, volleyball, and athletics.

  • Football: Football (soccer) is the most popular sport in Poland. The national team, known as the Biało-Czerwoni (White and Reds), has a storied history, with notable successes including third-place finishes in the 1974 and 1982 FIFA World Cups. The Polish Football Association oversees the sport, and the top-tier league, Ekstraklasa, features competitive clubs like Legia Warsaw, Lech Poznań, and Wisła Kraków.

  • Volleyball: Volleyball is another highly popular sport in Poland, with the national team achieving significant success on the international stage. The men’s team has won multiple World Championship titles, including victories in 2014 and 2018. Poland also hosts one of the most competitive national leagues in the world, PlusLiga, which attracts top talent from around the globe.

  • Athletics: Poland has a strong tradition in athletics, particularly in track and field events. Polish athletes have won numerous medals in the Olympics and World Championships. Names like Irena Szewińska, Anita Włodarczyk, and Robert Korzeniowski are celebrated for their contributions and achievements in the sport.

  • Winter Sports: Poland’s climate and geography make it a favorable destination for winter sports. Ski jumping is particularly popular, with Polish jumpers such as Adam Małysz and Kamil Stoch gaining international acclaim. The country also excels in cross-country skiing and biathlon.

Attention

The resolution of the charts is adjusted to the standard 16:9 aspect ratio, standard for most monitors and laptops.

Demography

Poland’s Demographic Structure (2015)

The population pyramid displayed above offers a comprehensive snapshot of Poland’s demographic landscape in 2015, segmented by gender. This graphical representation delineates the population distribution across various age cohorts, highlighting the differences between males and females.

Youth Population:

The youngest age groups (0-4 and 5-9) exhibit a balanced distribution between males and females, suggesting consistent birth rates during this period.

Working-Age Population:

Individuals in the 20-24 to 50-54 age brackets form the core of Poland’s working-age population. Here, the gender distribution is relatively even, though females slightly outnumber males in most cohorts.

Elderly Population:

A significant feature of this pyramid is the pronounced female majority in the older age groups, starting from 60-64 years onward. This trend reflects the higher life expectancy among women, a common demographic pattern observed globally.

Aging Population:

The pyramid’s shape, narrowing at the base and widening towards the top, underscores an aging population. The larger cohorts in the older age groups indicate a substantial elderly population, pointing to potential challenges and needs in healthcare and social services.

Age Pyramid

s <- svgstring(width = 10, height = 15)

ageBins <- c(paste0(seq(0, 99, 5), "-", seq(4, 100, 5)), "100+")
dfAge[2:22, ]$Age <- ageBins

dfAge[nrow(dfAge) - 4:nrow(dfAge),] %>%
  mutate(
    Age = factor(Age, levels = ageBins, ordered = T),
    Women = sub(" ", "", sub(" ", "", Women)) %>% as.numeric,
    Men =  sub(" ", "", sub(" ", "", Men)) %>% as.numeric,
    `%age` = sub(",", ".", `%age`) %>% as.numeric
  ) %>%
  filter(Age != "Ogółem") %>%
  ggplot(aes(
    y = Age
  )) +
  geom_col(aes(x = Women), fill = "#d1000a") +
  geom_col(aes(x = -Men), fill = "#111d2b") +
  geom_text(aes(
    x = Women,
    label = format(Women, big.mark = " ", scientific = F),
    color = if_else(Women < 10^5*2, "black", "white"),
    hjust = if_else(Women < 10^5*2, 0, 1)
  ), show.legend = F) +
  geom_text(aes(
    x = -Men,
    label = format(Men, big.mark = " ", scientific = F),
    color = if_else(Men < 10^5*2, "black", "white"),
    hjust = if_else(Men < 10^5*2, 1, 0)
  ), show.legend = F) +
  scale_color_manual(values = c("black", "white")) +
  scale_x_continuous(
    breaks = seq(-1500000, 15000000, 500000),
    labels = format(abs(seq(-1500000, 15000000, 500000)), big.mark = " ", scientific = F)
  ) +
  labs(
    x = "",
    y = "",
    title = "Poland's demography (estimation, 2015)",
    subtitle = glue::glue(
      "
      gender-wise comparisons: 
      <span style = 'color: #111d2b;'><b>men</b></span>,
      <span style = 'color: #d1000a;'><b>women</b> </span>
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n demography")
  ) +
  theme(
    plot.subtitle = element_markdown()
  )

htmltools::HTML(s())
5 519 38 970 164 806 376 980 571 202 621 315 1 102 945 1 374 477 1 407 097 1 176 530 1 130 951 1 316 404 1 482 301 1 543 389 1 367 645 1 177 960 957 358 866 575 997 556 925 737 926 796 1 713 10 821 56 278 159 279 291 685 388 818 806 003 1 114 311 1 246 589 1 115 823 1 116 244 1 328 852 1 515 234 1 594 620 1 420 368 1 221 584 1 000 405 911 890 1 049 403 979 042 978 526 0-4 5-9 10-14 15-19 20-24 25-29 30-34 35-39 40-44 45-49 50-54 55-59 60-64 65-69 70-74 75-79 80-84 85-89 90-94 95-99 100+ 1 500 000 1 000 000 500 000 0 500 000 1 000 000 1 500 000 gender-wise comparisons: men , women Poland's demography (estimation, 2015) Author: MK data source: wikipedia (2024-05-21) demography
invisible(dev.off())

Proportion Curve

s <- svgstring(width = 11, height = 7)

dfAge[nrow(dfAge) - 4:nrow(dfAge),] %>%
  mutate(
    Age = factor(Age, levels = ageBins, ordered = T),
    Women = sub(" ", "", sub(" ", "", Women)) %>% as.numeric,
    Men =  sub(" ", "", sub(" ", "", Men)) %>% as.numeric,
    `%age` = sub(",", ".", `%age`) %>% as.numeric,
    rown = row_number(),
    Proportion = Men / Women
  ) %>%
  filter(Age != "Ogółem") %>%
  ggplot(aes(
    x = Proportion,
    y = reorder(Age, -rown)
  )) +
  geom_path(color = "#d1000a", size = 2, aes(group = "")) +
  coord_flip() +
  geom_text(aes(label = round(Proportion, 2)), angle = 90, nudge_x = .055, color = "#111d2b", fontface = "bold") +
  labs(
    x = "Number of males per 1 female",
    y = "",
    title = "Poland's demography (estimation, 2015)",
    subtitle = "How many males are there per female?",
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n demography")
  ) + 
  theme(
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.y = element_blank(),
    panel.grid.major.x = element_line(linewidth = .1, linetype = 2, color = "#111d2b")
  )
htmltools::HTML(s())
0.31 0.28 0.34 0.42 0.51 0.63 0.73 0.81 0.89 0.95 0.99 1.01 1.02 1.03 1.04 1.04 1.04 1.05 1.05 1.06 1.06 0-4 5-9 10-14 15-19 20-24 25-29 30-34 35-39 40-44 45-49 50-54 55-59 60-64 65-69 70-74 75-79 80-84 85-89 90-94 95-99 100+ Number of males per 1 female How many males are there per female? Poland's demography (estimation, 2015) Author: MK data source: wikipedia (2024-05-21) demography
invisible(dev.off())

Births

Post-War Baby Boom (1946-1953)

The chart showcases a significant rise in births following World War II. This surge, evident in many European nations, reflects a post-war baby boom as families reunited and looked towards rebuilding.

Second Increase and Decline (1970s-Present)

The chart indicates another period of increased births in the early 1970s, extending into the 1980s. This rise could be attributed to government policies or economic prosperity that provided stability for families. However, a concerning trend emerges – a steady decline in birthrate since the early 1980s. This continuous downward slope suggests Poland’s birthrate has fallen below replacement level.

Possible Causes for Decline

The chart itself doesn’t pinpoint the reasons behind the decline, but some educated guesses can be made. Urbanization, with its smaller living spaces, might be a contributing factor. Furthermore, increased educational opportunities for women may be leading to later marriages and childbearing. Economic insecurity, a global concern, could also be discouraging couples from having children. It paints a clear picture: Poland’s birthrate has undergone a significant decline in recent decades. While the reasons are likely multifaceted – urbanization, educational advancements, economic uncertainty – the consequences are undeniable. A shrinking workforce and an aging population pose challenges for Poland’s social security systems, economic growth, and healthcare infrastructure.

s <- svgstring(width = 15, height = 10)

dfPopChange %>%
  mutate(
    Przyrostnaturalny =  sub("−", "", sub("–", "-", sub(" ", "", Przyrostnaturalny))) %>% as.numeric,
    Rok = as.numeric(substr(Rok, 1, 4))
  ) %>%
  ggplot(aes(
    x = Rok,
    y = Przyrostnaturalny
  )) +
  geom_vline(xintercept = 1964.5, color = "#111d2b", alpha = .4, size = 1.3) +
  geom_text(aes(x = 1964, y = 10^5*5.5, label = "Baby Boomers"), hjust = 1, size = 6, color = "#111d2b", family = "Segoe UI") +
  geom_vline(xintercept = 1978.5, color = "#111d2b", alpha = .4, size = 1.3) +
  geom_text(aes(x = 1978, y = 10^5*5.5, label = "Gen. X"), hjust = 1, size = 6, color = "#111d2b", family = "Segoe UI") +
  geom_vline(xintercept = 1994.5, color = "#111d2b", alpha = .4, size = 1.3) +
  geom_text(aes(x = 1994, y = 10^5*5.5, label = "Gen. Y"), hjust = 1, size = 6, color = "#111d2b", family = "Segoe UI") +
  geom_vline(xintercept = 2011.5, color = "#111d2b", alpha = .4, size = 1.3) +
  geom_text(aes(x = 2011, y = 10^5*5.5, label = "Gen. Z"), hjust = 1, size = 6, color = "#111d2b", family = "Segoe UI") +
  geom_text(aes(x = 2023, y = 10^5*5.5, label = "Gen. Alpha"), hjust = 1, size = 6, color = "#111d2b", family = "Segoe UI") +
  geom_col(fill = "#d1000a") +
  geom_text(aes(
    label = format(Przyrostnaturalny, big.mark = " ", scientific = F),
    hjust = case_when(
      Przyrostnaturalny >= 10^4*5 ~ 1,
      Przyrostnaturalny >= 0 ~ 0,
      Przyrostnaturalny < -10^4*5 ~ 0,
      T ~ 1
    ),
    color = case_when(
      Przyrostnaturalny >=  10^4*5 ~ "white",
      Przyrostnaturalny >= 0 ~ "black",
      Przyrostnaturalny < -10^4*5 ~ "white",
      T ~ "black"
    )
  ), angle = 90, show.legend = F, fontface = "bold") +
  scale_color_manual(values = c("#111d2b", "white")) +
  scale_y_continuous(
    breaks = seq(-200000, 600000, 100000),
    labels = format(abs(seq(-200000, 600000, 100000)), big.mark = " ", scientific = F)
   ) +
  scale_x_continuous(
    breaks = seq(1945.5, 2023.5, 2),
    labels = seq(1945, 2023, 2)
   ) +
  labs(
    x = "",
    y = "Birthrate",
    title = "Poland's Birthrate (1946-2023)",
    subtitle = "from babyboomers to alpha generation",
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n demography")
  ) +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.minor.x = element_blank()
  )


htmltools::HTML(s())
Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Baby Boomers Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. X Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Y Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Z Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha Gen. Alpha 380 700 422 800 437 500 444 600 474 400 471 300 492 300 512 500 501 700 532 200 530 200 513 200 514 100 470 500 445 300 399 900 360 300 358 100 326 900 314 000 297 400 272 700 280 100 268 300 279 200 278 600 310 500 321 400 344 000 346 900 366 000 349 600 341 200 365 300 342 600 349 800 367 500 371 400 334 100 296 100 258 400 227 100 216 900 181 300 157 420 142 019 120 514 102 010 94 885 47 009 42 703 32 435 20 319 602 10 348 5 005 5 735 14 128 7 369 3 883 4 544 10 673 35 099 32 689 34 800 12 916 1 457 17 724 1 340 25 613 5 752 852 25 789 34 909 -122 635 -188 000 -143 300 -137 000 200 000 100 000 0 100 000 200 000 300 000 400 000 500 000 1945 1947 1949 1951 1953 1955 1957 1959 1961 1963 1965 1967 1969 1971 1973 1975 1977 1979 1981 1983 1985 1987 1989 1991 1993 1995 1997 1999 2001 2003 2005 2007 2009 2011 2013 2015 2017 2019 2021 2023 Birthrate from babyboomers to alpha generation Poland's Birthrate (1946-2023) Author: MK data source: wikipedia (2024-05-21) demography
invisible(dev.off())

Men’s Football

The FIFA ranking (1990 - 2024)

The performance trajectory of Poland’s national football team in the FIFA rankings offers a compelling narrative of fluctuating fortunes over the past three decades. As depicted in the accompanying chart, Poland’s journey in the rankings is marked by significant highs and lows, reflecting periods of both decline and resurgence.

World Cup 2022, Poland National Team (Twitter @LaczyNasPilka)

Early Years: Stability and Initial Decline (1990-2005)

In the early 1990s, Poland’s national team maintained a relatively stable position within the top 30 of the FIFA rankings. This period was characterized by consistent performances and a solid standing in international football. However, this stability began to wane in the mid-1990s. By 1997, the team experienced a noticeable drop, slipping out of the top 30 and continuing a downward trend that would culminate in their lowest point.

The Nadir: Hitting Rock Bottom (2006-2013)

The years 2006 to 2013 were particularly challenging for the Polish team. The chart highlights a dramatic plunge in rankings during this period, reaching the lowest point in 2013 when Poland was ranked 78th in the world. This phase was marked by underwhelming performances and a struggle to compete effectively on the international stage.

The Resurgence: Climbing to New Heights (2014-2017)

Despite the setbacks, the mid-2010s marked a period of remarkable recovery and resurgence for Poland. Starting from 2014, the team began a steady ascent in the rankings. This upward momentum reached its zenith in 2017, when Poland achieved its highest-ever FIFA ranking, climbing to 5th place. This remarkable turnaround can be attributed to a combination of strategic changes, improved player performances, and successful qualification campaigns.

Recent Years: Maintaining a Competitive Edge (2018-2023)

Following their peak in 2017, Poland’s ranking saw a slight decline but has remained within a competitive range, generally fluctuating between the 15th and 30th positions. This period indicates a phase of relative stability and competitiveness, reflecting the team’s ability to maintain a solid presence in international football.

Position over years

s <- svgstring(width = 12, height = 6)

dfFifa %>%
  group_by(year) %>%
  mutate(mean = mean(position, na.rm = T)) %>%
  ggplot(aes(
    x = as.numeric(year),
    y = -mean
  )) +
  geom_line(color = "#F93943", size = 1.7) + 
  ### WORST
  annotate(
    "text",
    x = 2003.5,
    y = -68, 
    label = "The worst place in \n FIFA ranking \n (2013, 78th)",
    color = "#111d2b",
    fontface = 'bold',
    size = 5
  ) +
  geom_point(aes(y = -position), color = "#111d2b", size = 2, alpha = .5) +
  scale_x_continuous(breaks = seq(1990, max(dfFifa$year), na.rm = T, 2)) +
  scale_y_continuous(breaks = seq(0, -80, -5), labels =  seq(0, 80, 5)) +
  annotate(
    'curve',
    x = 2006.5,
    y = -72,
    yend = -78,
    xend = 2012.5,
    linewidth = 1,
    curvature = -0.2,
    arrow = arrow(length = unit(0.5, 'cm')),
    color = "#111d2b"
  ) +
  ### PEAK
  annotate(
    "text",
    x = 2012,
    y = -22, 
    label = "Poland's peak in \n FIFA ranking \n (2017, 5th)",
    color = "#111d2b",
    fontface = 'bold',
    size = 5
  ) +
  geom_point(aes(y = -position), color = "#111d2b", size = 2, alpha = .5) +
  annotate(
    'curve',
    x = 2014,
    y = -11.5,
    yend = -6.5,
    xend = 2016.5,
    linewidth = 1,
    curvature = -0.35,
    arrow = arrow(length = unit(0.5, 'cm')),
    color = "#111d2b"
  ) +
  labs(
    x = "Ranked year",
    y = "Position",
    title = "How is polish footbal team performing in the FIFA ranking?",
    subtitle = "year's average with each month's rank marked",
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )

htmltools::HTML(s())
The worst place in FIFA ranking (2013, 78th) Poland's peak in FIFA ranking (2017, 5th) 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 2014 2016 2018 2020 2022 Ranked year Position year's average with each month's rank marked How is polish footbal team performing in the FIFA ranking? Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

Poland’s peak in 2017 is particularly noteworthy, as it signifies the culmination of efforts to rebuild and strengthen the team. Maintaining a competitive position in recent years suggests that Poland has established a more consistent framework for success, which could bode well for future international competitions.

Clear boxplot

s <- svgstring(width = 12, height = 6)

 dfFifa %>%
  ggplot(aes(
    x = year,
    y = position
  )) +
  geom_boxplot() +
  labs(
    x = "Ranked year",
    y = "Position",
    title = "How is polish footbal team performing in the FIFA ranking?",
    subtitle = "year's average with each month's rank marked",
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )
 
htmltools::HTML(s())
20 40 60 80 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 Ranked year Position year's average with each month's rank marked How is polish footbal team performing in the FIFA ranking? Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

Poland’s peak in 2017 is particularly noteworthy, as it signifies the culmination of efforts to rebuild and strengthen the team. Maintaining a competitive position in recent years suggests that Poland has established a more consistent framework for success, which could bode well for future international competitions.

Legends of polish football (1920 - 2024)

Poland has produced a rich lineage of football talent, particularly in the realm of goal-scoring strikers who have left an indelible mark on the sport. The accompanying chart provides a visual representation of Poland’s top strikers, categorized by the number of goals they scored during their careers, offering a timeline of football excellence from the early 20th century to the present day.

Early Pioneers (1920s-1950s)

The journey of Polish football’s greatest strikers begins with the early pioneers of the 1920s and 1930s. Wawrzyniec Staliński, who scored 11 goals, and Józef Nawrot, with 16 goals, laid the foundational stones. These early stars set the stage for future generations, demonstrating the potential of Polish talent on the international stage.

Moving into the 1950s, we see the emergence of players like Gerard Cieślik, who netted 27 goals. His remarkable performance during this period helped elevate Poland’s status in international football, establishing a legacy that would inspire future strikers.

Golden Era (1960s-1980s)

The 1960s to the 1980s represent a golden era for Polish football, highlighted by prolific goal-scorers who dominated the field. Włodzimierz Lubański, with an impressive 48 goals, stands out as a towering figure of this era. His goal-scoring prowess and leadership on the field were instrumental in Poland’s successful campaigns during this period.

Other notable strikers from this era include Grzegorz Lato (45 goals) and Andrzej Szarmach (32 goals), both of whom played pivotal roles in Poland’s strong performances in international tournaments, including the World Cup. Their contributions cemented Poland’s reputation as a formidable footballing nation.

Transition and Consistency (1990s-2000s)

The 1990s and 2000s were marked by a blend of seasoned veterans and emerging talents. Players like Roman Kosecki (19 goals) and Andrzej Juskowiak (13 goals) provided consistency and experience, while younger stars such as Euzebiusz Smolarek (19 goals) began to make their mark.

This period also saw the rise of versatile midfielders like Jakub Błaszczykowski (21 goals), who, despite not being traditional strikers, contributed significantly to the team’s goal tally. Their performances ensured that Poland remained competitive on the international stage, setting the stage for future talents.

Modern Legends (2010s-Present)

The modern era of Polish football has been defined by the extraordinary talents of strikers like Robert Lewandowski, who has set a new benchmark with an astounding 82 goals. Lewandowski’s goal-scoring feats have not only brought numerous accolades to Poland but have also earned him a place among the world’s elite footballers. His consistency, skill, and leadership continue to inspire both teammates and fans.

Top Strikers

s <- svgstring(width = 12, height = 9)

dfTeam %>%
  arrange(-debut) %>%
  mutate(
    id = row_number(),
    goals_buket = cut(goals, breaks = c(0, 19, 39, 1000), labels = c("[0, 19]", "[20, 39]", "40+"))
  ) %>%
  ggplot() + 
  geom_rect(aes(
    xmin = debut,
    xmax = off,
    ymin = id + .4,
    ymax = id - .4,
    fill = goals_buket
  ), show.legend = F) +
  geom_text(aes(
    x = debut - 1.5,
    y = if_else(id < 35, id, NA),
    label = paste0(player, " (", goals, ")")
  ), hjust = 1) + 
  geom_text(aes(
    x = off,
    y = id,
    label = paste0(off - debut, "y")
  ), hjust = 1, color = "white") + 
  geom_text(aes(
    x = off + 1.5,
    y = if_else(id >= 35, id, NA),
    label = paste0(player, " (", goals, ")")
  ), hjust = 0) + 
  scale_x_continuous(breaks = seq(min(dfTeam$debut, na.rm = T) - 2, max(dfTeam$off, na.rm = T), 4)) +
  theme(
    axis.line.y = element_blank(),
    axis.text.y = element_blank(),
    axis.ticks.y = element_blank(),
    plot.subtitle = element_markdown()
  ) + 
  scale_fill_manual(
    values = c(
      "#111d2b",
      "#2f4f77",
      "#d1000a"
    )
  ) +
  labs(
    x = "Year played (from debut to off)",
    y = "",
    title = "The best stikers in the history of polish football",
    subtitle = glue::glue(
      "
      divided by a number (binned) of scored goals:
      <span style = 'color: #111d2b;'><b>[10, 19]</b></span>,
      <span style = 'color: #2f4f77;'><b>[20, 39]</b></span>,
      <span style = 'color: #d1000a;'><b>46+</b> </span>
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )


htmltools::HTML(s())
Karol Świderski (10) Krzysztof Piątek (11) Piotr Zieliński (11) Arkadiusz Milik (17) Robert Lewandowski (82) Kamil Grosicki (17) Jakub Błaszczykowski (21) Euzebiusz Smolarek (19) Emmanuel Olisadebe (11) Paweł Kryszałowicz (10) Tomasz Frankowski (10) Maciej Żurawski (17) Jacek Krzynówek (15) Radosław Kałużny (11) Andrzej Juskowiak (13) Wojciech Kowalczyk (11) Roman Kosecki (19) Marek Leśniak (10) Jan Furtok (10) Dariusz Dziekanowski (20) Włodzimierz Smolarek (13) Andrzej Iwan (11) Zbigniew Boniek (24) Andrzej Szarmach (32) Grzegorz Lato (45) Kazimierz Deyna (41) Robert Gadocha (16) Joachim Marx (10) Andrzej Jarosik (11) Włodzimierz Lubański (48) Zygfryd Szołtysik (10) Eugeniusz Faber (11) Ernest Pol (39) Lucjan Brychczy (18) 3y 6y 11y 12y 16y 16y 17y 8y 4y 5y 7y 10y 11y 8y 9y 8y 7y 8y 9y 9y 12y 9y 12y 9y 13y 10y 8y 9y 7y 17y 9y 10y 10y 15y 11y 3y 5y 7y 6y Gerard Cieślik (27) Leonard Piątek (11) Ernest Wilimowski (21) Józef Nawrot (16) Wawrzyniec Staliński (11) 1920 1924 1928 1932 1936 1940 1944 1948 1952 1956 1960 1964 1968 1972 1976 1980 1984 1988 1992 1996 2000 2004 2008 2012 2016 2020 2024 Year played (from debut to off) divided by a number (binned) of scored goals: [10, 19] , [20, 39] , 46+ The best stikers in the history of polish football Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

The historical overview of Poland’s greatest strikers, as illustrated in the chart, reflects a rich and evolving legacy of football talent. From early pioneers to modern legends, each era has produced remarkable goal-scorers who have contributed to the national team’s successes and reputation. As Poland continues to develop and nurture football talent, the achievements of these strikers will remain a source of inspiration and pride for future generations, ensuring that the legacy of Polish football excellence endures.

Efficiency

s <- svgstring(width = 12, height = 9)


dfTeam <- 
  dfTeam %>%
  mutate(
    ratio = round(goals / matches, 2)
  )

mostEfficient <- (
  dfTeam %>%
  top_n(., 5, ratio)
  )$player

dfTeam %>%
  mutate(
    isTop = player %in% mostEfficient,
    player = paste0(sub(" ", "\n", player), "\n(", goals, "/", matches, ")")
  ) %>%
  ggplot(aes(
    x = goals,
    y = matches,
    size = ratio
  )) + 
  geom_text(aes(
    label = player,
    color = isTop
  ), alpha = .7, show.legend = F, fontface = 2) +
  scale_x_log10() + 
  scale_y_log10() +
  scale_size(range = c(3, 6)) +
  scale_color_manual(values = c("#111d2b", "#d1000a")) +
  theme(
    plot.subtitle = element_markdown()
  ) + 
  labs(
    x = "Goals Scored",
    y = "Matches Played",
    title = "The best stikers in the history of polish football",
    subtitle = glue::glue(
      "
      player efficiency comparison 
      <b>(goals scored / matches played)</b>
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )

htmltools::HTML(s())
Robert Lewandowski (82/148) Włodzimierz Lubański (48/75) Grzegorz Lato (45/100) Kazimierz Deyna (41/97) Ernest Pol (39/46) Andrzej Szarmach (32/61) Gerard Cieślik (27/45) Zbigniew Boniek (24/80) Ernest Wilimowski (21/22) Jakub Błaszczykowski (21/109) Dariusz Dziekanowski (20/63) Roman Kosecki (19/69) Euzebiusz Smolarek (19/47) Lucjan Brychczy (18/58) Maciej Żurawski (17/72) Kamil Grosicki (17/93) Arkadiusz Milik (17/72) Józef Nawrot (16/19) Robert Gadocha (16/62) Jacek Krzynówek (15/96) Włodzimierz Smolarek (13/60) Andrzej Juskowiak (13/39) Wawrzyniec Staliński (11/13) Leonard Piątek (11/17) Eugeniusz Faber (11/36) Andrzej Jarosik (11/25) Andrzej Iwan (11/29) Wojciech Kowalczyk (11/39) Emmanuel Olisadebe (11/25) Radosław Kałużny (11/41) Krzysztof Piątek (11/28) Piotr Zieliński (11/88) Zygfryd Szołtysik (10/46) Joachim Marx (10/23) Jan Furtok (10/36) Marek Leśniak (10/20) Paweł Kryszałowicz (10/33) Tomasz Frankowski (10/22) Karol Świderski (10/30) 30 50 100 10 30 50 Goals Scored Matches Played player efficiency comparison (goals scored / matches played) The best stikers in the history of polish football Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

The historical overview of Poland’s greatest strikers, as illustrated in the chart, reflects a rich and evolving legacy of football talent. From early pioneers to modern legends, each era has produced remarkable goal-scorers who have contributed to the national team’s successes and reputation. As Poland continues to develop and nurture football talent, the achievements of these strikers will remain a source of inspiration and pride for future generations, ensuring that the legacy of Polish football excellence endures.

The Rivals (1920 - 2024)

The chart’s vertical axis represents “Historical opponents rank,” indicating teams’ historical performance rankings. The horizontal axis spans from 0 to 100+ goals, representing the number of goals scored or lost. Each team is depicted by two points connected by a line:

  • Red Point (Goals Lost): Indicates the number of goals conceded by the team.

  • Black Point (Goals Scored): Represents the team’s offensive prowess.

Top Right Quadrant (Strong Offense, Solid Defense)

Teams positioned far to the right (closer to 100 goals scored) have impressive offensive records. If the black point is higher than the red point, it indicates that the team has conceded fewer goals than they’ve scored. Notable teams in this quadrant might include Barcelona, Bayern Munich, and other dominant clubs.

Bottom Left Quadrant (Weak Offense, Vulnerable Defense)

Teams positioned far to the left (closer to 0 goals scored) struggle offensively. If the red point is higher than the black point, it suggests that the team concedes more goals than they score. These teams need to improve both their attacking and defensive strategies.

Top Left Quadrant (Strong Offense, Vulnerable Defense)

Teams with high goals scored but also high goals conceded fall into this quadrant. While they excel in attacking, their defense needs work. Balancing offensive flair with defensive stability is crucial for these teams.

Bottom Right Quadrant (Weak Offense, Solid Defense)

Teams here have solid defensive records but struggle to find the back of the net. They need to focus on improving their attacking play. Examples might include teams that prioritize a strong defense, such as Italy or Greece.

Scoring Goals

s <- svgstring(width = 12, height = 18)

dfRival %>%
  group_by(Rival) %>%
  mutate(
    diff = GZ - GS,
    position = max(GZ, GS)
  ) %>%
  ggplot(aes(y = reorder(Rival, diff))) +
  geom_segment(aes(
    x = GZ,
    xend = GS,
    yend = reorder(Rival, diff)
  )) +
  geom_point(aes(x = GZ), color = "#d1000a", size = 5) +
  geom_point(aes(x = GS), color = "#0a0229", size = 4) +
  geom_text(aes(
    label = paste0(GZ, "/", GS),
    x = position + 4
  ), color = "#111d2b") +
  theme(
    plot.subtitle = element_markdown()
  ) + 
  labs(
    x = "Number of goals",
    y = "",
    title = "Who should we fear? The historical context.",
    subtitle = glue::glue(
      "
      Poland Team opponents by number of goals 
      <span style = 'color: #d1000a;'><b>scored</b></span> /
      <span style = 'color: #0a0229;'><b>lost</b></span>.
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )

htmltools::HTML(s())
20/10 6/1 11/1 13/33 7/2 12/20 15/4 1/2 19/17 20/1 27/27 9/10 3/1 9/3 19/37 47/30 3/2 2/0 3/7 14/5 9/6 27/43 12/13 38/49 0/4 5/4 23/5 82/29 17/30 4/0 15/1 30/12 13/4 3/2 11/3 9/28 19/28 2/1 7/3 6/2 44/30 14/13 15/7 28/15 14/10 39/46 0/3 20/4 12/3 8/10 5/6 7/2 8/3 0/0 3/1 5/0 2/0 17/8 26/5 42/15 11/2 13/0 9/3 9/13 13/6 13/34 26/27 0/1 58/26 2/0 0/4 9/2 1/1 13/18 7/7 57/56 45/2 1/2 5/3 7/5 6/1 14/14 9/9 36/22 15/14 21/12 41/59 3/1 9/2 39/12 11/9 4/5 13/6 43/92 10/23 3/1 16/1 9/2 11/27 Hungary Germany England Spain Brazil Sweden Czechoslovakia Soviet Union France Italy Denmark Netherlands Argentina Yugoslavia Portugal Croatia Egypt Mexico Paraguay Cameroon Colombia Australia Belarus Czechia German Democratic Republic Nigeria Senegal South Korea Uruguay Belgium Cuba Russia Slovakia Slovenia South Africa Chile Ecuador Guatemala India Northern Ireland Romania Scotland Austria Bolivia China Côte d’Ivoire Kuwait Liechtenstein New Zealand Serbia Serbia and Montenegro Thailand Ukraine Montenegro Ghana Iran Iraq Japan Algeria Costa Rica Libya North Korea Saudi Arabia Singapore Bosnia & Herzegovina Morocco Moldova Peru Tunisia United Arab Emirates Wales Haiti Iceland Cyprus Georgia Kazakhstan Lithuania North Macedonia Switzerland Albania Andorra Armenia Israel Malta Gibraltar Ireland United States Faroe Islands Canada Bulgaria Estonia Greece Azerbaijan Luxembourg Latvia Turkey Norway San Marino Finland 0 25 50 75 100 Number of goals Poland Team opponents by number of goals scored / lost . Who should we fear? The historical context. Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

Match Results

s <- svgstring(width = 12, height = 18)

dfRival %>%
  group_by(Rival) %>%
  mutate(position = max(W, R, P)) %>%
  ggplot(aes(
    y = reorder(Rival, (W - P))
  )) +
  geom_segment(aes(
    x = W,
    xend = P,
    yend = reorder(Rival, (W - P))
  ), color = "#111d2b") +
  geom_point(aes(x = W), color = "#d1000a", size = 4) +
  geom_point(aes(x = R), color = "#2f5077", shape = 4, size = 4) +
  geom_point(aes(x = P), color = "#0a0229", size = 3.5) + 
  geom_text(aes(
    label = paste0(W, "/", P, "/", R),
    x = position + 1
  ), color = "#111d2b") +
  theme(
    plot.subtitle = element_markdown()
  ) + 
  labs(
    x = "Matches played",
    y = "",
    title = "Who should we fear? The historical context.",
    subtitle = glue::glue(
      "
      Poland Team opponents by matches 
      <span style = 'color: #d1000a;'><b>won</b></span> /
      <span style = 'color: #0a0229;'><b>lost</b></span> /
      <span style = 'color: #2f5077;'><b>draw</b></span>.
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )

htmltools::HTML(s())
9/2/3 2/0/0 3/0/0 1/12/8 4/0/0 3/7/2 5/1/1 0/1/0 5/3/2 5/0/1 7/8/6 2/2/2 2/0/0 4/0/1 1/9/2 12/5/8 1/0/1 2/0/0 1/3/1 4/0/3 2/0/2 4/10/5 4/5/1 8/13/2 0/1/1 1/1/1 8/1/1 22/3/8 3/9/5 1/0/0 2/0/0 10/3/4 4/1/0 1/0/1 2/1/0 1/8/2 3/9/7 1/0/0 2/1/2 3/0/0 11/6/11 4/4/2 5/0/2 7/2/4 5/2/0 6/9/4 0/1/2 6/0/0 4/0/1 2/4/0 1/1/1 1/0/1 3/0/0 0/0/1 1/0/1 1/0/0 1/0/0 5/2/4 6/0/1 12/2/2 4/0/1 4/0/0 2/1/2 3/3/3 5/1/2 2/13/7 9/6/4 0/1/0 12/4/3 1/0/1 0/1/0 3/0/0 1/1/0 3/5/5 1/1/3 7/14/15 10/0/0 0/1/0 2/0/3 2/0/0 1/0/0 3/5/1 3/2/3 7/7/3 3/2/6 4/1/6 9/15/4 1/0/0 3/1/0 11/3/3 4/3/2 1/1/2 7/1/3 8/21/5 3/7/8 1/0/0 5/0/0 2/0/0 3/8/3 Hungary England Germany Brazil Romania Spain Czechoslovakia France Netherlands Sweden Denmark Soviet Union Argentina Italy Yugoslavia Colombia Croatia Portugal Slovakia Australia Belgium Cameroon Czechia Egypt Nigeria Paraguay Senegal Belarus Cuba Ecuador Mexico Northern Ireland Russia South Africa South Korea United States Uruguay Chile Côte d’Ivoire Ghana Guatemala Haiti India Iraq Kuwait Libya Liechtenstein Morocco New Zealand North Korea Scotland Singapore Slovenia Thailand Ukraine Algeria Austria Bolivia China Gibraltar Montenegro Serbia Serbia and Montenegro Tunisia United Arab Emirates Andorra Costa Rica Georgia German Democratic Republic Iran Japan Lithuania Peru Switzerland Armenia Bosnia & Herzegovina Cyprus Kazakhstan Malta Moldova North Macedonia Saudi Arabia Azerbaijan Faroe Islands Iceland Ireland Israel Canada Luxembourg Wales Albania Bulgaria Estonia Greece Norway Turkey Latvia San Marino Finland 0 5 10 15 20 Matches played Poland Team opponents by matches won / lost / draw . Who should we fear? The historical context. Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())

Match Results Map

s <- svgstring(width = 18, height = 8)

world <- ne_countries(scale = "medium", returnclass = "sf")
world_data <- world %>% 
  left_join(dfRival, by = c("name" = "Rival"))

world_data %>%
  mutate(Total = W - P) %>%
ggplot() +
  geom_sf(aes(fill = Total), color = "#ffffff") +
  scale_fill_gradient2(
    low = "#0a0229",
    mid = "#2f5077",
    high = "#d1000a",
    midpoint = 0,
    na.value = "#dddddd",
    name = "Matchs balance"
  ) +
  theme(
    plot.subtitle = element_markdown()
  ) + 
  labs(
    title = "Who should we fear? The historical context.",
    subtitle = glue::glue(
      "
      Poland Team opponents by matches mostly
      <span style = 'color: #d1000a;'><b>won</b></span> /
      <span style = 'color: #0a0229;'><b>lost</b></span> /
      <span style = 'color: #2f5077;'><b>draw</b></span>.
      "
    ),
    caption = paste0("Author: MK \n data source: wikipedia (", Sys.Date(), ") \n men's national football team")
  )

htmltools::HTML(s())
-10 0 10 Matchs balance Poland Team opponents by matches mostly won / lost / draw . Who should we fear? The historical context. Author: MK data source: wikipedia (2024-05-21) men's national football team
invisible(dev.off())